package gsql

import (
	"database/sql"
	"fmt"
)

type DB struct {
	con *sql.DB
}

// 打开数据库连接
func Connect(opt *Options) (*DB, error) {

	v := &DB{}

	// 获取数据库连接dsn
	dsn := opt.DsnString()
	fmt.Printf("[GSQL][DEBUG] dsn: %+v\n", dsn)

	// 打开数据库连接
	con, e := sql.Open(opt.Driver, dsn)
	if e != nil {
		return nil, e
	}

	// 设置可选项
	con.SetConnMaxLifetime(0)
	con.SetMaxIdleConns(50)
	con.SetMaxOpenConns(50)

	// 检查数据库是否连通
	e = con.Ping()

	// set con
	v.con = con

	return v, e
}

// 关闭数据库连接
func (db *DB) Close() error {
	if db.con == nil {
		return nil
	}
	return db.con.Close()
}

// 开启事物
// func (db *DB) Begin() {
// 	db.con.Begin()
// }

// 提交事务
// func (tx *Tx) Commit() {

// }

// 回滚事务
// func (tx *Tx) Rollback() {

// }
